package uniandes.caing.ccambios.controller;

import uniandes.caing.ccambios.entidades.Line;
import uniandes.caing.ccambios.entidades.SourceFile;
import uniandes.caing.ccambios.exceptions.SourceCounterException;

public interface SourceCounterControllerI {

	/**
	 * Metodo que cuenta las lineas de codigo de un programa siguiqndo un
	 * estandar
	 * 
	 * @param source
	 * @return
	 */
	public int countLOC(SourceFile sourceFile) throws SourceCounterException;

	/**
	 * Metodo que evalua una linea de codigo para actualizar las varialbes
	 * globales y determinar si es
	 * <ol>
	 * <li>Linea vacia</li>
	 * <li>Comentario</li>
	 * <li>LOC</li>
	 * <ol>
	 * 
	 * @param line
	 * @return 1 si es una linea de codigo valida 0 eoc En otro caso
	 */
	public int evaluateLine(Line line);

}
